package cn.tkb.basic.util;

import cn.tkb.user.domain.LoginInfo;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import javax.servlet.http.HttpServletRequest;

/**
 * SpringContext  spring的上下文
 * 我们先目前是一个非收Spring管理的类，但是他需要从Spring容器里面去获取RedisTemplate对象
 *    1.先直接拿到Spring容器
 *    2.通过容器，我们就可以随便获取容器的对象了
 *
 */
public class LoginContext {

    public static LoginInfo getCurrentLoginInfo(HttpServletRequest request){
        String token = request.getHeader("token");
        if(!StringUtils.isEmpty(token)){
            // ===========================获取Spring容器
            WebApplicationContext applicationContext =
                    WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
            RedisTemplate redisTemplate = (RedisTemplate) applicationContext.getBean("redisTemplate");
            Object o = redisTemplate.opsForValue().get(token);
            //3.如果不为空，应该用redis获取当前登录人
            if(o != null){
                return (LoginInfo)o;
            }
        }
        return null;
    }

}